package cn.edu.scau.cmi.ema.dao;

import java.util.Set;

import org.springframework.dao.DataAccessException;
import cn.edu.scau.cmi.ema.domain.*;
import cn.edu.scau.cmi.ema.domain.base.CmiPagination;

public interface MaterialDAO extends JpaDao<Material> {

	public Material findMaterialById(Integer id) throws DataAccessException;

	public Material findMaterialById(Integer id, int startResult, int maxRows) throws DataAccessException;

	public Set<Material> findMaterialByName(String name) throws DataAccessException;

	public Set<Material> findMaterialByName(String name, int startResult, int maxRows) throws DataAccessException;

	public Set<Material> findMaterialByNameContaining(String name_1) throws DataAccessException;

	public Set<Material> findMaterialByNameContaining(String name_1, int startResult, int maxRows)
			throws DataAccessException;

	public Set<Material> findMaterialByQuality(String quality) throws DataAccessException;

	public Set<Material> findMaterialByQuality(String quality, int startResult, int maxRows) throws DataAccessException;

	public Set<Material> findMaterialByQualityContaining(String quality_1) throws DataAccessException;

	public Set<Material> findMaterialByQualityContaining(String quality_1, int startResult, int maxRows)
			throws DataAccessException;

	public Set<Material> findMaterialByDescription(String description) throws DataAccessException;

	public Set<Material> findMaterialByDescription(String description, int startResult, int maxRows)
			throws DataAccessException;

	public Set<Material> findMaterialByDescriptionContaining(String description_1) throws DataAccessException;

	public Set<Material> findMaterialByDescriptionContaining(String description_1, int startResult, int maxRows)
			throws DataAccessException;

	public Material findMaterialByPrimaryKey(Integer id) throws DataAccessException;

	public Material findMaterialByPrimaryKey(Integer id, int startResult, int maxRows) throws DataAccessException;

	public Set<Material> findMaterialsByIds(Set<Integer> ids) throws DataAccessException;

	public Set<Material> findAllMaterials() throws DataAccessException;

	public Set<Material> findAllMaterials(int startResult, int maxRows) throws DataAccessException;

	public Set<Material> findMaterialByCompositeProperities(String sql, int startResult, int maxRows)
			throws DataAccessException;

	public Set<Material> findMaterialsByDetachedCriteria(CmiPagination page) throws DataAccessException;

	public Material findMaterialByPhysicalPrimaryKey(String name, String quality) throws DataAccessException;

	public Material findMaterialByPhysicalPrimaryKey(String name, String quality, int startResult, int maxRows)
			throws DataAccessException;
}
